﻿using System;
using System.Collections.Generic;

namespace CRM.Database.Model
{
    public partial class ProductSystems : ISetChangedUser, IGetLocalizedName, IGetKeyValue, IGetNamesValues
    {
        #region Implementation of ISetChangedUser

        /// <summary>
        /// Установка пользователя, который сделал изменение
        /// </summary>
        /// <param name="userLogin">Логин пользователя</param>
        public void SetChangedUser(string userLogin)
        {
            if (string.IsNullOrEmpty(userLogin))
                throw new Exception("Логин пользователя не должен быть пустым");
            IdUser = userLogin;
        }

        #endregion

        #region Implementation of IGetLocalizedName

        /// <summary>
        /// Получение имени на выбранном языке
        /// </summary>
        /// <param name="currentLanguage">Язык</param>
        /// <returns>Имя на заданном языке</returns>
        public string GetLocalizedName(CurrentLanguage currentLanguage)
        {
            switch (currentLanguage)
            {
                case CurrentLanguage.Russian:
                    return ProductSystemRu;
                case CurrentLanguage.English:
                    return ProductSystemEn;
                default:
                    throw new ArgumentOutOfRangeException("currentLanguage");
            }
        }

        /// <summary>
        /// Получение имени на текущем языке
        /// </summary>
        /// <returns>Локализованное имя</returns>
        public string GetLocalizedName()
        {
            return GetLocalizedName(DB.CurrentLanguage);
        }

        #endregion

        #region Implementation of IGetKeyValue

        /// <summary>
        /// Получение ключего значения элемента
        /// </summary>
        /// <returns>Ключевое значение</returns>
        public int GetKeyValue()
        {
            return IdProductSystem;
        }

        #endregion

        #region Implementation of IGetNamesValues

        /// <summary>
        /// Получение списка имён
        /// </summary>
        /// <returns>Список имён</returns>
        public List<string> GetNamesValues()
        {
            var result = new List<string>();
            result.Add(ProductSystemRu);
            result.Add(ProductSystemEn);
            result.Add(ProductSystemDe);
            result.Add(ProductSystemSAP);
            return result;
        }

        #endregion

        #region Extended properties

        /// <summary>
        /// Отображение локилизованного имени
        /// </summary>
        public string ProductSystemNameLocalized
        {
            get { return GetLocalizedName(); }
        }

        /// <summary>
        /// 
        /// </summary>
        public string ProductMarkExt
        {
            get
            {
                if (ProductMarks != null)
                {
                    return ProductMarks.ProductMark;
                }
                return "";
            }
        }

        #endregion

        #region Extendedn methods

        /// <summary>
        /// Локализованное имя
        /// </summary>
        public string LocalizedName
        {
            get { return GetLocalizedName(); }
        }

        /// <summary>
        /// заполнить нули пробелами
        /// </summary>
        public void Fill()
        {
            if (string.IsNullOrEmpty(ProductSystemRu))
                ProductSystemRu = " ";
            if (string.IsNullOrEmpty(ProductSystemEn))
                ProductSystemEn = " ";
            if (string.IsNullOrEmpty(ProductSystemDe))
                ProductSystemDe = " ";
            if (string.IsNullOrEmpty(ProductSystemSAP))
                ProductSystemSAP = " ";
        }

        #endregion
    }
}